import axios from 'axios';
import router from '../router'
import { Message } from 'element-ui';
import store from '../store/index'

//vue中引用NProgress加载进度条
import NProgress from 'nprogress'
import 'nprogress/nprogress.css'

axios.defaults.headers['Content-Type'] = 'application/json;charset=utf-8'

// axios 配置
axios.defaults.timeout = 5000 //设置接口响应时间5s
axios.defaults.withCredentials = false;//跨域

//环境的切换 开发环境(development)使用的是测试接口  和   生产环境(production)使用的是上线接口

if (process.env.NODE_ENV === 'development') {
  axios.defaults.baseURL = process.env.VUE_APP_BASE_API
  // axios.defaults.baseURL = 'http://vueapi.atywl.com/api/private/v1/'
}
else {
  axios.defaults.baseURL = process.env.VUE_APP_BASE_API
}

// 请求在到达服务器之前，先会调用use中的这个回调函数来添加请求头信息
axios.interceptors.request.use(config => {
  NProgress.start()
  // console.log(config)
  // 为请求头对象，添加token验证的token字段store.state.loginModule.manager_info.token
  // config.headers.token = window.localStorage.getItem('token')
  config.headers.token = store.state.loginModule.manager_info.token
  // 在最后必须 return config
  return config
})

// response 拦截器中,  隐藏进度条NProgress.done()
axios.interceptors.response.use(config => {
  NProgress.done()
  //获取错误状态码
  const { status } = config.data;
  if (status == 401) {
    Message.error('token失效，请重新登录!');
    window.localStorage.clear();
    router.push('/login');
  }
  return config
})

export default axios